home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Borland Visual dBASE Professiona v7.0 / DATA1.CAB / Sample_dBASE / Fleet / reportbar.prg < prev    next >
Text File  |  1997-11-20  |  4KB  |  141 lines

  1. //------------------------------------------------------------------------
  2. //
  3. //  reportbar.prg
  4. //
  5. //  Toolbar with report print and page navigation buttons.
  6. //  To use:
  7. /* 
  8.      f = new RepViewForm()
  9.      DO reportBar.prg WITH f, f.repView       // for small buttons
  10.      DO reportBar.prg WITH f, f.repView, true // for large buttons
  11. */
  12. //  
  13. //  Visual dBASE Samples Group
  14. //
  15. //  $Revision:   1.4  $
  16. //
  17. //  Copyright (c) 1997, Borland International, Inc. All rights reserved.    
  18. //
  19. //------------------------------------------------------------------------  
  20.  
  21.    parameter FormObj, repView, bLarge
  22.    local t, bNew
  23.    t    = null
  24.    bNew = false
  25.  
  26.    if ( PCOUNT() == 0 )
  27.       MSGBOX("To attach this toolbar to a form use: " + ;
  28.               CHR(13) + CHR(13) + ;
  29.              "DO " + PROGRAM() + " WITH <form reference>","Alert")
  30.    else
  31.       t := FindInstance("ReportToolbar")
  32.       if ( ( t == null ) or ( not FormObj.mdi ) )
  33.          SET PROCEDURE TO (PROGRAM()) ADDITIVE
  34.          t = new ReportToolbar( repView, bLarge )
  35.          bNew := true
  36.       endif
  37.       t.attach( FormObj )  
  38.    endif
  39.  
  40. return ( bNew )
  41.  
  42. class ReportToolbar( repView, bLarge ) of Toolbar
  43.    local sBitsize
  44.    sBitsize = IIF( bLarge, "TL_", "TS_" )
  45.  
  46.    this.repView  = repView  // create reference to the report viewer
  47.    this.flat     := true
  48.    this.text     := "Report"
  49.    this.onUpdate := class::rep_onUpdate
  50.  
  51.    this.tPrint = new ToolButton( this )
  52.    with ( this.tPrint )
  53.         bitmap   := "RESOURCE #857"// + sBitsize + "RPRINT"
  54.         speedTip := "Print..."
  55.         onClick  := class::tPrint_onClick
  56.    endwith
  57.  
  58.  
  59.    this.tSep  = new ToolButton( this )
  60.    with ( this.tSep )
  61.       separator := true
  62.    endwith
  63.  
  64.    this.tFirst = new ToolButton( this )
  65.    with ( this.tFirst )
  66.         bitmap   := "RESOURCE " + sBitsize + "RFIRST"
  67.         speedTip := "Top Page"
  68.         onClick  := class::tFirst_onClick
  69.    endwith
  70.  
  71.    this.tPrev = new ToolButton( this )
  72.    with ( this.tPrev )
  73.         bitmap   := "RESOURCE " + sBitsize + "RPREV"
  74.         speedTip := "Previous Page"
  75.         onClick  := class::tPrev_onClick
  76.    endwith
  77.    
  78.    this.tNext = new ToolButton( this )
  79.    with ( this.tNext )
  80.         bitmap   := "RESOURCE " + sBitsize + "RNEXT"
  81.         speedTip := "Next Page"
  82.         onClick  := class::tNext_onClick
  83.    endwith
  84.  
  85.    function rep_onUpdate
  86.       local bRepFound
  87.       bRepFound = ( TYPE("this.repView.ref.startPage") == "N" )
  88.       if ( bRepFound )
  89.          with ( this )
  90.             tPrint.enabled := true
  91.             tNext.enabled  := ( not this.repView.ref.isLastPage() )
  92.             tFirst.enabled := ( this.repView.ref.startPage > 1 )
  93.             tPrev.enabled  := ( this.repView.ref.startPage > 1 )
  94.          endwith
  95.       else
  96.          with ( this )
  97.             tPrint.enabled := false
  98.             tNext.enabled  := false
  99.             tFirst.enabled := false
  100.             tPrev.enabled  := false         
  101.          endwith
  102.       endif
  103.    return ( bRepFound )
  104.  
  105.    function tPrint_onClick
  106.       local bPrint
  107.       bPrint = CHOOSEPRINTER()
  108.       if ( bPrint )
  109.          this.parent.repView.ref.output := 1 // printer
  110.          this.parent.repView.ref.render()
  111.          this.parent.repView.ref.output := 3 // default
  112.       endif
  113.    return ( bPrint )
  114.  
  115.    function tFirst_onClick
  116.       this.parent.repView.filename := this.parent.repView.filename
  117.       with ( this.parent.repView.ref )
  118.          startPage := 1
  119.          endPage   := 1
  120.       endwith
  121.    return ( this.parent.repView.ref.render() )
  122.  
  123.    function tPrev_onClick      
  124.       local nPage, rView
  125.       rView = this.parent.repView
  126.       nPage = rView.ref.startPage
  127.       nPage--
  128.       rView.filename := rView.filename
  129.       rView.ref.startPage := nPage
  130.       rView.ref.endPage   := nPage
  131.    return ( rView.ref.render() )
  132.  
  133.    function tNext_onClick
  134.       with ( this.parent.repView.ref )
  135.          startPage++
  136.          endPage := this.parent.repView.ref.startPage
  137.       endwith
  138.    return ( this.parent.repView.ref.render() )
  139.  
  140. endclass
  141.